package com.ruoyi.repair.service;

import java.util.List;
import com.ruoyi.repair.domain.TFaultReport;

/**
 * 故障报修Service接口
 * 
 * @author ruoyi
 * @date 2025-09-29
 */
public interface ITFaultReportService 
{
    /**
     * 查询故障报修
     * 
     * @param reportNo 故障报修主键
     * @return 故障报修
     */
    public TFaultReport selectTFaultReportByReportNo(String reportNo);

    /**
     * 查询故障报修列表
     * 
     * @param tFaultReport 故障报修
     * @return 故障报修集合
     */
    public List<TFaultReport> selectTFaultReportList(TFaultReport tFaultReport);

    /**
     * 新增故障报修
     * 
     * @param tFaultReport 故障报修
     * @return 结果
     */
    public int insertTFaultReport(TFaultReport tFaultReport);

    /**
     * 修改故障报修
     * 
     * @param tFaultReport 故障报修
     * @return 结果
     */
    public int updateTFaultReport(TFaultReport tFaultReport);

    /**
     * 批量删除故障报修
     * 
     * @param reportNos 需要删除的故障报修主键集合
     * @return 结果
     */
    public int deleteTFaultReportByReportNos(String[] reportNos);

    /**
     * 删除故障报修信息
     * 
     * @param reportNo 故障报修主键
     * @return 结果
     */
    public int deleteTFaultReportByReportNo(String reportNo);

    /**
     * 提交故障报修（生成维修单）
     * 
     * @param reportNo 报修单号
     * @return 结果
     */
    public int submitFaultReport(String reportNo);

    /**
     * 撤回故障报修
     * 
     * @param reportNo 报修单号
     * @return 结果
     */
    public int withdrawFaultReport(String reportNo);

    /**
     * 承认故障报修
     * 
     * @param reportNo 报修单号
     * @return 结果
     */
    public int acknowledgeFaultReport(String reportNo);

    /**
     * 拒绝承认故障报修
     * 
     * @param reportNo 报修单号
     * @return 结果
     */
    public int rejectFaultReport(String reportNo);

    /**
     * 更新故障报修状态
     * 
     * @param reportNo 报修单号
     * @param status 新状态
     * @return 结果
     */
    public int updateFaultReportStatus(String reportNo, String status);

    /**
     * 获取状态履历
     * 
     * @param reportNo 报修单号
     * @return 状态履历列表
     */
    public List<Object> getStatusHistory(String reportNo);

    /**
     * 检查设备是否有未完成的报修
     * 
     * @param assetNo 设备编号
     * @return 是否有未完成报修
     */
    public boolean hasUnfinishedReport(String assetNo);
}
